<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/9/24
  Time: 9:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>学生展示</title>
    <!-- 注意：项目正式环境请勿引用该地址 -->
    <link rel="stylesheet" href="${pageContext.request.contextPath}/static/layui/css/layui.css" >

    <style type="text/css">
        .layui-table-cell{
            height:auto!important;
            white-space:normal;
        }
    </style>
</head>
<body>
<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-xs" lay-event="edit" >编辑</a>
    <a class="layui-btn layui-btn-xs" lay-event="share" >分享二维码</a>
<%--    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>--%>
</script>

<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="addStu">添加</button>
        <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
        <button class="layui-btn layui-btn-sm" lay-event="getData">获取当前页数据</button>
        <button class="layui-btn layui-btn-sm" lay-event="isAll">是否全选</button>
    </div>
</script>
<div class="addPlane">
    <form class="layui-form" action=""  id="savePlaneForm" style="display: none"  lay-filter="updateUserFormFilter">
        <input type="hidden" name="id" >
            <div class="registerbox-title">执行计划</div>
            <div class="layui-form-item">
                <label class="layui-form-label">计划名字</label>
                <div class="layui-input-inline">
                    <input type="text" name="username" onblur="checkName(this)"  lay-verify="required" placeholder="请输入名字" autocomplete="off"
                           class="layui-input">
                </div>
            </div>

            <div  id="test-range">
                <div class="layui-form-item">
                 <div class="layui-inline">
                        <label class="layui-form-label">开始时间</label>
                        <div class="layui-input-inline">
                            <input type="text" id="startDate" lay-verify="required" name="begintime" class="layui-input" placeholder="开始日期">
                        </div>
    <%--                    <div class="layui-form-mid">-</div>--%>

                 </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">结束时间</label>
                            <div class="layui-input-inline">
                                <input type="text" id="endDate" lay-verify="required" name="endtime" class="layui-input" placeholder="结束日期">
                            </div>
                        </div>
                    </div>
                </div>
            </div>
                <div class="layui-form-item pass" >
                    <label class="layui-form-label">邀请码</label>
                    <div class="layui-input-inline">
                            <input  type="text" name="code" id="code" lay-verify="required" readonly
                                   autocomplete="off" class="layui-input"  >
                        <label>不满意？<a href="#"  onclick="getcode();" id="loginRegister">重新生成验证码</a>
    <%--                    <button type="button" onclick="getcode();" class="layui-btn layui-btn-warm">邀请码</button>--%>

                    </div>
                </div>

            <div class="layui-form-item">
                <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formPlaneUser">添加</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>

        </form>
</div>

<%----%>

<%--二维码开始--%>
<div id="qrcode" style="display: none"></div>
<%--存放二维码图片的地方--%>
<div style="display: none"><img src="" id="erweima" style="margin:0 auto;"></div>

<%--二维码结束--%>


    <%--查询条件--%>
    <form class="layui-form" action="">
        <div class="layui-inline">
            <label class="layui-form-label">名字</label>
            <div class="layui-input-inline">
                <input type="text" name="planename"  placeholder="请输入计划名字" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-inline">
            <div class="layui-input-inline">
                <button class="layui-btn" lay-submit lay-filter="formDemo">查询</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>


<table class="layui-hide" id="test" lay-filter = "test"></table>
<!-- 注意：项目正式环境请勿引用该地址 -->
<script src="${pageContext.request.contextPath}/static/jquery-3.6.1.min.js"></script>
<script src="${pageContext.request.contextPath}/static/html2canvas.min.js"></script>
<script src="${pageContext.request.contextPath}/static/layui/layui.js"></script>
<script src="${pageContext.request.contextPath}/static/layui/qrcode.js"></script>

<script>

        layui.use(['table','layer','form','jquery','laydate'], function(){
            var table = layui.table;
            var layer = layui.layer;
            var form = layui.form;
            var $ = layui.jquery;

            var laydate=layui.laydate;
            var namestatus=true;

            laydate.render({
                elem: '#test-range' //开始时间和结束时间所在 input 框的父选择器
                //设置开始日期、日期日期的 input 选择器
                ,range: ['#startDate', '#endDate'] //数组格式为 layui 2.6.6 开始新增
            });

            table.render({
                // element  元素
                elem: '#test'
                ,page:true
                ,limit:2
                ,limits:[2,4,6,8]
                ,toolbar: '#toolbarDemo'
                ,url:'${pageContext.request.contextPath}/tFpaPlane' //  表格了里面所需要的数据就是一个list里面有很多的map、对象
                ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增

                ,cols: [[
                    {type: 'checkbox', fixed: 'left'}
                    // field 后面跟的内容  必须跟后台传过来的数据里面的map 的key保持一致
                    ,{field:'id', title: 'ID', sort: true}
                    ,{field:'user', title: '创建人',templet:function(d){

                            return '<span>'+d.user.username+'</span>';
                        }} //width 支持：数字、百分比和不填写。你还可以通过 minWidth 参数局部定义当前单元格的最小宽度，layui 2.2.1 新增
                    ,{field:'begintime', title: '开始时间', sort: true}
                    ,{field:'endtime', title: '结束时间', sort: true}
                    ,{field:'code', title: '邀请码', sort: true,}

                    ,{fixed: 'right', title:'操作',  minWidth: 125, toolbar: '#barDemo'}
                ]]

            });


            // 查询
            form.on('submit(formDemo)', function(data){
                console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
                console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
                console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
                table.reload('test', {
                    where: data.field,
                    page: {
                        curr: 1 //重新从第 1 页开始
                    },
                });
                return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
            });



            // 工具栏事件
            table.on('toolbar(test)', function(obj){
                var uid = obj.config.uid;
                var checkStatus = table.checkStatus(uid);
                var othis = lay(this);
                switch(obj.event){
                    case 'getCheckData':
                        var data = checkStatus.data;
                        layer.alert(layui.util.escape(JSON.stringify(data)));
                        break;
                    case 'getData':
                        var getData = table.getData(id);
                        console.log(getData);
                        layer.alert(layui.util.escape(JSON.stringify(getData)));
                        break;
                    case 'isAll':
                        layer.msg(checkStatus.isAll ? '全选': '未全选')
                        break;
                    case 'addStu':
                        $("#savePlaneForm")[0].reset();
                        getcode();
                        layer.open({
                            type: 1,
                            area: ['500px', '400px'],
                            offset: '100px',
                            content:$("#savePlaneForm"),
                            cancel: function(index, layero){

                                layer.close(index);
                                $("#savePlaneForm").hide();
                                return false;
                            }
                        });
                        break;
                };
            });

            //触发单元格工具事件
            //监听行工具事件
            table.on('tool(test)', function(obj){
                var data = obj.data;
                //console.log(obj)
                if(obj.event === 'edit'){
                    layer.open({
                        type: 1,
                        area: ['500px', '400px'],
                        offset: '100px',
                        content:$("#savePlaneForm"),
                        cancel: function(index, layero){
                            layer.close(index);
                            $("#savePlaneForm").hide();
                            return false;
                        }
                    });
                    form.val('updateUserFormFilter',data);
                }
                if(obj.event === 'share'){
                    var url="http://192.168.3.16:8080${pageContext.request.contextPath}/front/index.jsp";

                    //生成100*100(宽度100，高度100)的二维码
                    $('#qrcode').qrcode({
                        render: "canvas", //也可以替换为table
                        width: 200,
                        height: 200,
                        foreground: "green",
                        background: "#FFF",
                        text: url
                        // $("#output").qrcode(encodeURI("http://中文中文"));//使用encodeURI进行转码
                    });

                    //
                    $("#qrcode").css("display","block");
                    createImg();
                    layer.open({
                        type: 1,
                        area: ['400', '400'],
                        offset: '100px',
                        content:$('#qrcode'),
                        cancel: function(index, layero){

                            layer.close(index);
                            $("#qrcode").empty();
                            $("#qrcode").css("display","none");
                            $("#erweima").attr("src","");
                            return false;
                        },
                        btn:['下载图片'],
                        //绑定第一个按钮的点击事件
                        yes: function(index) {
                            //下载图片到本地
                            // var a = document.createElement('a');
                            // var event = new MouseEvent('click');
                            // a.download = "分享投票二维码";
                            // //a.href = url;
                            // //a.dispatchEvent(event);
                            var oImg =$('#erweima').attr("src");
                            var oA = document.createElement("a");
                            oA.download = '';// 设置下载的文件名，默认是'下载'
                            oA.href = oImg;
                            document.body.appendChild(oA);
                             oA.click();
                            // oA.remove(); // 下载之后把创建的元素删除
                        }

                    });



                }
            });



            //提交表单
            // Layui提交表单 监听提交  data代表的是form表单里面的所有的内容
            form.on('submit(formPlaneUser)', function(data){
                alert(JSON.stringify(data.field));

                    $.ajax({
                        url:"${pageContext.request.contextPath}/tFpaPlane/addPlane",
                        type:"post",
                        dataType:"JSON",
                        data:data.field,//表单里所有数据
                        success:function (ret){
                            if (ret.data == true){
                                //关闭所有弹框
                                layer.closeAll();
                                $("#savePlaneForm").hide();
                                //刷新页面
                                table.reload('test');
                            }
                        }
                    })

                return false;
            });


            var getcode=async function(){

                // 生成的邀请码不能重复
                // 定义fpa的邀请码是以f未开头
                 var code1=Math.floor(Math.random()*10)+"";
                 var code2=Math.floor(Math.random()*10)+"";
                 var code3=Math.floor(Math.random()*10)+"";
                 var code4=Math.floor(Math.random()*10)+"";
                 var code="f"+code1+code2+code3+code4;
                 var status=false;
               // 名字在数据库中不存在时候添加  存在就不能添加
                 await $.post("${pageContext.request.contextPath}/tFpaPlane/",{code:code},function(d){

                     if(d.data==true){
                         status=true;
                     }else{
                         status=false;
                     }
                 })

                 if(status==true){
                     $("#code").val(code);
                 }else{
                     getcode();
                 }

            }





            var createImg = function () {
                new html2canvas(document.getElementById('qrcode'), {
                    width: 100,
                    height: 100,
                    backgroundColor: "transparent",        //背景图片透明
                    allowTaint: true,    //跨域
                    useCORS: true         //跨域
                }).then(canvas => {
                    // canvas为转换后的Canvas对象
                    let oImg = new Image();
                    oImg = canvas.toDataURL('image/png');  // 导出图片
                    $("#erweima").attr('src', oImg);


                    // var oA = document.createElement("a");
                    // oA.download = '';// 设置下载的文件名，默认是'下载'
                    // oA.href = oImg;
                    // document.body.appendChild(oA);
                    // oA.click();
                    // oA.remove(); // 下载之后把创建的元素删除
                });
            }
        });





</script>

</body>
</html>
